One advantage of REST API is that it promotes independent evolution of clients and servers in a loosely coupled fashion. However, as the REST APIs are evolving with various versions and their new versions often contain significant changes, maintaining backward compatibility of REST APIs has been difficult and has become a problem in REST API applications.
Prior approaches for determining backward compatibility of REST APIs are mostly manual. Once a server publishes a new REST API version, client developers have to read the manual and mentally figure out if any existing client code can be reused with the new REST API. Although the developers can run some automated test suites to determine which parts of the client still work and which parts fail, the tests cannot tell why some tests failed, and how to change the client code to make the client work with the new API when some API messages are still recognizable but re-factored.